from django.contrib.auth.models import User
from rest_framework import serializers
from app_book.models import BookInfo, HeroInfo


# 英雄序列化器
class HeroInfoSerializer(serializers.ModelSerializer):
    class Meta:
        model = HeroInfo
        # fields = ('id', "hname","hgender","hcomment","is_delete")
        fields = '__all__'  # 所有字段
        # exclude = ['password']  # 排除 id 字段


# 英雄序列化器
class BookHeroInfoSerializer(serializers.ModelSerializer):
    class Meta:
        model = HeroInfo
        fields = ('id', "hname", "hgender", "hcomment", "is_delete")
        # fields = '__all__'  # 所有字段
        # exclude = ['password']  # 排除 id 字段


# 书籍序列化器
class BookInfoSerializer(serializers.ModelSerializer):
    heroinfo_set = BookHeroInfoSerializer(many=True)  # 序列化书籍的时候, 也要把书籍管理的英雄也序列化数据

    class Meta:
        model = BookInfo
        # fields = ('id', )
        fields = '__all__'  # 所有字段
        # exclude = ['password']  # 排除 id 字段


# 英雄序列化器
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        # fields = '__all__'  # 所有字段
        # exclude = ['password']  # 排除 password 字段
        fields = ('id', 'last_login', "username", "first_name", "last_name", "email", "date_joined")

# 序列号器, 两个方向,  读写
# 序列化数据,  结构化数据
# json 是什么序列化数据
# model, 一行数据, 结构化数据

# 序列化,  model=>json   读
# 反序列化,  json=>model   写
# 1. 读方向
# 根据前端发送的id, 根据id获取数据库中的数据, 绑定到模型(用数据实例化一个模型), 用序列化器把模型序列化成json
# 然后返回给前端.

# 2. 写方向
# 前端发送json数据给接口,   接口取到json后, 先用序列号器进行验证,
# 验证通过, 进行反序列化, 转换成模型, 根据模型, 更新到数据库
